﻿



CREATE proc [Job].[SaveJob] (
	@JobID				uniqueidentifier = null output,
	@UserID				int,
	@JobType			int = null,	
	@Title				nvarchar(255),
	@Einheit			char(5) = null,
	@Fahrzeug			Char(5),
	@Datum				smalldatetime,
	@StartTime			Time,
	@EndTime			Time,
	@Leistung			nvarchar(255),
	@LeistungProzent	decimal(11,2),
	@LeistungZeit		decimal(11,2),
	@ProjektName		nvarchar(255),
	@Status				smallint,
	@CashSaleID			int = null,
	@ProjectID			int = null,
	@Area				nvarchar(50) = null,
	@SubArea			nvarchar(50) = null,
	@Sb					nvarchar(50) = null,
	@Ss					nvarchar(50) = null,
	@Datei				nvarchar(150) = null,
	@Fa					nvarchar(50) = null,
	@Vr					nvarchar(50) = null,
	@ErrorMessage		nvarchar(400) = '' output
)
as
begin

	set nocount on

	if @JobID is null
	begin
		select @JobID = NEWID();
	end
	
	if @UserID is null
	begin
		set @ErrorMessage = 'UserID ist null';
		goto EndWithError;
	end

	if IsNull(@JobType,-1) = -1
	begin
		set @ErrorMessage = 'JobType ist null';
		goto EndWithError;
	end
	if IsNull(@Title,'') = ''
	begin
		set @ErrorMessage = 'Title ist null';
		goto EndWithError;
	end
	if IsNull(@Einheit,'') = ''
	begin
		set @ErrorMessage = 'Einheit ist null';
		goto EndWithError;
	end
	if IsNull(@Fahrzeug,'') = ''
	begin
		set @ErrorMessage = 'Fahrzeug ist null';
		goto EndWithError;
	end
	if IsNull(@Datum,'') = ''
	begin
		set @ErrorMessage = 'Datum ist null';
		goto EndWithError;
	end
	--if coalesce(@StartTime,'') = ''
	--begin
	--	set @ErrorMessage = 'StartTime ist null';
	--	goto EndWithError;
	--end
	--if coalesce(@EndTime,'') = ''
	--begin
	--	set @ErrorMessage = 'EndTime ist null';
	--	goto EndWithError;
	--end
	--if IsNull(@Leistung,'') = ''
	--begin
	--	set @ErrorMessage = 'Leistung ist null';
	--	goto EndWithError;
	--end
	if IsNull(@LeistungProzent,0)= 0
	begin
		set @ErrorMessage = 'LeistungProzent ist null';
		goto EndWithError;
	end
	if IsNull(@LeistungZeit,0) = 0
	begin
		set @ErrorMessage = 'LeistungZeit ist null';
		goto EndWithError;
	end
	--if IsNull(@ProjektName,'') = ''
	--begin
	--	set @ErrorMessage = 'ProjektName ist null';
	--	goto EndWithError;
	--end
	if IsNull(@Status,-1) = -1
	begin
		set @ErrorMessage = 'Status ist null';
		goto EndWithError;
	end
	
	
	begin tran;
	
	
	
	with src 
	as
	(
		Select	@JobID				'JobID',
				@UserID				'UserID',
				@JobType			'JobType',
				@Title				'Title',
				@Einheit			'Einheit',
				@Fahrzeug			'Fahrzeug',
				@Datum				'Datum',
				@StartTime			'StartTime',
				@EndTime			'EndTime',
				@Leistung			'Leistung',
				@LeistungProzent	'LeistungProzent',
				@LeistungZeit		'LeistungZeit',
				@ProjektName		'ProjektName',
				@Status				'Status',
				@CashSaleID			'CashSaleID',
				@ProjectID			'ProjectID',
				@Area				'Area', 
				@SubArea			'SubArea', 
				@Sb					'Sb', 
				@Ss					'Ss', 
				@Datei				'Datei', 
				@Fa					'Fa', 
				@Vr					'Vr'
	)
	
	merge Job.datJob as target
	using src
		on (target.JobID = src.JobID)
	when matched then 
		update SET	
				UserID			= src.UserID,
				JobType			= src.JobType,
				Title			= src.Title,
				Einheit			= src.Einheit,
				Fahrzeug		= src.Fahrzeug,
				Datum			= src.Datum,
				StartTime		= src.StartTime,
				EndTime			= src.EndTime,
				Leistung		= src.Leistung,
				LeistungProzent	= src.LeistungProzent,
				LeistungZeit	= src.LeistungZeit,
				ProjektName		= src.ProjektName,
				[Status]		= src.[Status],
				CashSaleID		= src.CashSaleID,
				ProjectID		= src.ProjectID,
				Area			= src.Area, 
				SubArea			= src.SubArea, 
				Sb				= src.Sb, 
				Ss				= src.Ss, 
				Datei			= src.Datei, 
				Fa				= src.Fa, 
				Vr				= src.Vr
				
	when not matched by target then
		insert (
			UserID,
			JobID,
			JobType,
			Title,
			Einheit,
			Fahrzeug,
			Datum,
			StartTime,
			EndTime,
			Leistung,
			LeistungProzent,
			LeistungZeit,
			ProjektName,
			[Status],
			CashSaleID,
			ProjectID,
			Area, 
			SubArea, 
			Sb, 
			Ss, 
			Datei, 
			Fa, 
			Vr
		)
		values (
			src.UserID,
			src.JobID,
			src.JobType,
			src.Title,
			src.Einheit,
			src.Fahrzeug,
			src.Datum,
			src.StartTime,
			src.EndTime,
			src.Leistung,
			src.LeistungProzent,
			src.LeistungZeit,
			src.ProjektName,
			src.[Status],
			src.CashSaleID,
			src.ProjectID,
			src.Area, 
			src.SubArea, 
			src.Sb, 
			src.Ss, 
			src.Datei, 
			src.Fa, 
			src.Vr
		);
		
	
	commit;
	return 0;
	
EndWithError:
	RAISERROR ( @ErrorMessage, 16, 1);
	return 1;	

end
GO


